/*
 * (C) 2003-2006 Gabest
 * (C) 2006-2025 see Authors.txt
 *
 * This file is part of MPC-BE.
 *
 * MPC-BE is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 3 of the License, or
 * (at your option) any later version.
 *
 * MPC-BE is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 */

#pragma once

#include <mmreg.h>
#include <mpc_defines.h>

#define WAVE_FORMAT_AMR       0x00FE
#define WAVE_FORMAT_SIPR      0x0130 // synonym for WAVE_FORMAT_SIPROLAB_ACEPLNET
#define WAVE_FORMAT_ATRC      0x0270 // intersects with WAVE_FORMAT_SONY_SCX
#define WAVE_FORMAT_LATM_AAC  0x01FF
#define WAVE_FORMAT_DOLBY_AC3 0x2000 // intersects with WAVE_FORMAT_DVM
#define WAVE_FORMAT_14_4      0x2002
#define WAVE_FORMAT_28_8      0x2003
#define WAVE_FORMAT_COOK      0x2004
#define WAVE_FORMAT_DNET      0x2005
#define WAVE_FORMAT_RAAC      0x2006
#define WAVE_FORMAT_RACP      0x2007
#define WAVE_FORMAT_ADPCM_SWF 0x5346
#define WAVE_FORMAT_ADX_ADPCM 0x6153
#define WAVE_FORMAT_TTA1      0x77A1
#define WAVE_FORMAT_PS2_PCM   0xF521
#define WAVE_FORMAT_PS2_ADPCM 0xF522

// {00000006-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_ALAW, WAVE_FORMAT_ALAW);

// {00000007-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_MULAW, WAVE_FORMAT_MULAW);

// {0000000A-0000-0010-8000-00AA00389B71} Windows Media Audio Voice
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_WMSP1, WAVE_FORMAT_WMAVOICE9);

// {00000022-0000-0010-8000-00aa00389b71} DSP Group TrueSpeech
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_TRUESPEECH, WAVE_FORMAT_DSPGROUP_TRUESPEECH);

// {00000045-0000-0010-8000-00AA00389B71} G.726 ADPCM
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_G726_ADPCM, WAVE_FORMAT_SHARP_G726);

// {00000055-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_MP3, WAVE_FORMAT_MPEGLAYER3);

// {00000075-0000-0010-8000-00aa00389b71} Voxware MetaSound
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_VOXWARE_RT29, WAVE_FORMAT_VOXWARE_RT29);

// {000000FE-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_AMR, WAVE_FORMAT_AMR);

// {00000130-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_SIPR_WAVE, WAVE_FORMAT_SIPR);

// {000001FF-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_LATM_AAC, WAVE_FORMAT_LATM_AAC);

// {00000270-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_ATRAC3, WAVE_FORMAT_ATRC);

// {00000401-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_INTEL_MUSIC, WAVE_FORMAT_INTEL_MUSIC_CODER);

// {00000402-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_INDEO_AUDIO, WAVE_FORMAT_INDEO_AUDIO);

// {00000500-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_ON2VP7_AUDIO, WAVE_FORMAT_ON2_VP7_AUDIO);

// {00000501-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_ON2VP6_AUDIO, WAVE_FORMAT_ON2_VP6_AUDIO);

// {00002000-0000-0010-8000-00aa00389b71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_WAVE_DOLBY_AC3, WAVE_FORMAT_DOLBY_AC3);

// {00005346-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_ADPCM_SWF, WAVE_FORMAT_ADPCM_SWF);

// {00005756-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_WAVPACK4, WAVE_FORMAT_WAVPACK_AUDIO);

// {000077A1-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_TTA1, WAVE_FORMAT_TTA1);

// {0000A109-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_SPEEX, WAVE_FORMAT_SPEEX_VOICE);

// {0000F1AC-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_FLAC, WAVE_FORMAT_FLAC);

// {0000F521-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_PS2_PCM, WAVE_FORMAT_PS2_PCM);

// {0000F522-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_PS2_ADPCM, WAVE_FORMAT_PS2_ADPCM);

//

// {53544441-0000-0010-8000-00AA00389B71} AAC-ADTS LAVF/LAVC specific
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_AAC_ADTS, FCC('ADTS'));

// ... and also compatible with nero
// btw, older nero parsers use a lower-case fourcc, newer upper-case (why can't it just offer both?)
// {4134504D-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_MP4A, FCC('MP4A'));

// {6134706D-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_mp4a, FCC('mp4a'));

// {1541C5C0-CDDF-477d-BC0A-86F8AE7F8354}
DEFINE_GUID(MEDIASUBTYPE_FLAC_FRAMED, 0x1541c5c0, 0xcddf, 0x477d, 0xbc, 0x0a, 0x86, 0xf8, 0xae, 0x7f, 0x83, 0x54);

// {B82196E9-1B3F-4796-A636-46239087B38E} dsfTAKsource specific
DEFINE_GUID(MEDIASUBTYPE_TAK, 0xB82196E9, 0x1B3F, 0x4796, 0xA6, 0x36, 0x46, 0x23, 0x90, 0x87, 0xB3, 0x8E);

// {6E726873-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Shorten, FCC('shrn'));

// {B8CBBAD8-AA1A-4cea-B95E-730041A55EF0}
DEFINE_GUID(MEDIASUBTYPE_WavpackHybrid, 0xb8cbbad8, 0xaa1a, 0x4cea, 0xb9, 0x5e, 0x73, 0x00, 0x41, 0xa5, 0x5e, 0xf0);

// {726D6173-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_SAMR, FCC('samr'));

// {62776173-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_SAWB, FCC('sawb'));

// {30375056-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_VP70, FCC('VP70'));

// {30385056-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_VP80, FCC('VP80'));

// {30395056-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_VP90, FCC('VP90'));

// {34616D69-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_IMA4, FCC('ima4'));

// {342D4341-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DOLBY_AC4, FCC('AC-4'));

// {DA5B82EE-6BD2-426f-BF1E-30112DA78AE1}
DEFINE_GUID(MEDIASUBTYPE_SVCD_SUBPICTURE, 0xda5b82ee, 0x6bd2, 0x426f, 0xbf, 0x1e, 0x30, 0x11, 0x2d, 0xa7, 0x8a, 0xe1);

// {7B57308F-5154-4c36-B903-52FE76E184FC}
DEFINE_GUID(MEDIASUBTYPE_CVD_SUBPICTURE, 0x7b57308f, 0x5154, 0x4c36, 0xb9, 0x03, 0x52, 0xfe, 0x76, 0xe1, 0x84, 0xfc);

// {0E3A2342-F6E2-4c91-BDAE-87C71EAD0D63}
DEFINE_GUID(MEDIASUBTYPE_MPEG2_PVA, 0x0e3a2342, 0xf6e2, 0x4c91, 0xbd, 0xae, 0x87, 0xc7, 0x1e, 0xad, 0x0d, 0x63);

// DirectShowMedia

// {5E9C9EE0-2E4A-4f22-9906-7BBBB75AA2B6}
DEFINE_GUID(MEDIASUBTYPE_DirectShowMedia, 0x5e9c9ee0, 0x2e4a, 0x4f22, 0x99, 0x06, 0x7b, 0xbb, 0xb7, 0x5a, 0xa2, 0xb6);


// Dirac

// {A29DA00F-A22B-40ea-98DE-2F7FECADA5DE}
DEFINE_GUID(MEDIASUBTYPE_Dirac, 0xa29da00f, 0xa22b, 0x40ea, 0x98, 0xde, 0x2f, 0x7f, 0xec, 0xad, 0xa5, 0xde);

// {64726376-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DiracVideo, FCC('vcrd'));

// {D2667A7E-4055-4244-A65F-DDDDF2B74BD7}
DEFINE_GUID(FORMAT_DiracVideoInfo, 0xd2667a7e, 0x4055, 0x4244, 0xa6, 0x5f, 0xdd, 0xdd, 0xf2, 0xb7, 0x4b, 0xd7);

// {63617264-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DRAC, FCC('drac'));


// {434C4C43-0000-0010-8000-00AA00389B71} Canopus Lossless
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_CLLC, FCC('CLLC'));

// {43565543-0000-0010-8000-00AA00389B71} Canopus HQ
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_CUVC, FCC('CUVC'));

// {58514843-0000-0010-8000-00AA00389B71} Canopus HQX
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_CHQX, FCC('CHQX'));

// {44484643-0000-0010-8000-00AA00389B71} CineForm
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_CFHD, FCC('CFHD'));


// MP4

// {08E22ADA-B715-45ed-9D20-7B87750301D4}
DEFINE_GUID(MEDIASUBTYPE_MP4, 0x08e22ada, 0xb715, 0x45ed, 0x9d, 0x20, 0x7b, 0x87, 0x75, 0x03, 0x01, 0xd4);


// FLV

// {F2FAC0F1-3852-4670-AAC0-9051D400AC54}
DEFINE_GUID(MEDIASUBTYPE_FLV, 0xf2fac0f1, 0x3852, 0x4670, 0xaa, 0xc0, 0x90, 0x51, 0xd4, 0x00, 0xac, 0x54);

// {31564C46-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_FLV1, FCC('FLV1'));

// {31766C66-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_flv1, FCC('flv1'));

// {34564C46-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_FLV4, FCC('FLV4'));

// {34766C66-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_flv4, FCC('flv4'));

// {30335056-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_VP30, FCC('VP30'));

// {31335056-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_VP31, FCC('VP31'));

// {30355056-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_VP50, FCC('VP50'));

// {30357076-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_vp50, FCC('vp50'));

// {30365056-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_VP60, FCC('VP60'));

// {30367076-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_vp60, FCC('vp60'));

// {31365056-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_VP61, FCC('VP61'));

// {31367076-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_vp61, FCC('vp61'));

// {32365056-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_VP62, FCC('VP62'));

// {32367076-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_vp62, FCC('vp62'));

// {41365056-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_VP6A, FCC('VP6A'));

// {61367076-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_vp6a, FCC('vp6a'));

// {46365056-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_VP6F, FCC('VP6F'));

// {66367076-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_vp6f, FCC('vp6f'));


// HEVC/H265

// {43564548-0000-0010-8000-00AA00389B71} HEVC
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_HEVC, FCC('HEVC'));

// {31435648-0000-0010-8000-00AA00389B71} HVC1
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_HVC1, FCC('HVC1'));

// {31637668-0000-0010-8000-00AA00389B71} hvc1
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_hvc1, FCC('hvc1'));

// {30314D48-0000-0010-8000-00AA00389B71} HEVC HM10.0
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_HM10, FCC('HM10'));


// RealMedia

// {57428EC6-C2B2-44a2-AA9C-28F0B6A5C48E}
DEFINE_GUID(MEDIASUBTYPE_RealMedia, 0x57428ec6, 0xc2b2, 0x44a2, 0xaa, 0x9c, 0x28, 0xf0, 0xb6, 0xa5, 0xc4, 0x8e);

// {30315652-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_RV10, FCC('RV10'));

// {30325652-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_RV20, FCC('RV20'));

// {30335652-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_RV30, FCC('RV30'));

// {30345652-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_RV40, FCC('RV40'));

// {31345652-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_RV41, FCC('RV41'));

// {345f3431-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_14_4, FCC('14_4'));

// {385f3832-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_28_8, FCC('28_8'));

// {43525441-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_ATRC, FCC('ATRC'));

// {E923AABF-CB58-4471-A119-FFFA01E4CE62}
DEFINE_GUID(MEDIASUBTYPE_ATRAC3plus, 0xE923AABF, 0xCB58, 0x4471, 0xA1, 0x19, 0xFF, 0xFA, 0x01, 0xE4, 0xCE, 0x62);

// {47E142D2-36BA-4D8D-88FC-61654F8C836C}
DEFINE_GUID(MEDIASUBTYPE_ATRAC9, 0x47E142D2, 0x36BA, 0x4D8D, 0x88, 0xFC, 0x61, 0x65, 0x4F, 0x8C, 0x83, 0x6C);

// {4b4f4f43-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_COOK, FCC('COOK'));

// {54454e44-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DNET, FCC('DNET'));

// {52504953-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_SIPR, FCC('SIPR'));

// {43414152-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_RAAC, FCC('RAAC'));

// {50434152-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_RACP, FCC('RACP'));

// {464C4152-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_RALF, FCC('RALF'));


// QuickTime PCM

// {454E4F4E-0000-0010-8000-00AA00389B71} (unsigned 8-bit)
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_PCM_NONE, FCC('NONE'));

// {20776172-0000-0010-8000-00AA00389B71} (unsigned 8-bit, signed big-endian 16 bit)
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_PCM_RAW, MAKEFOURCC('r','a','w',0x20));

// {736f7774-0000-0010-8000-00AA00389B71} (signed 8-bit, signed big-endian 16-bit)
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_PCM_TWOS, FCC('twos'));

// {74776f73-0000-0010-8000-00AA00389B71} (signed 8-bit, signed little-endian 16-bit)
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_PCM_SOWT, FCC('sowt'));

// {34326E69-0000-0010-8000-00AA00389B71} (signed big-endian int24)
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_PCM_IN24, FCC('in24'));

// {32336E69-0000-0010-8000-00AA00389B71} (signed big-endian int32)
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_PCM_IN32, FCC('in32'));

// {32336C66-0000-0010-8000-00AA00389B71} (signed big-endian float32)
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_PCM_FL32, FCC('fl32'));

// {34366C66-0000-0010-8000-00AA00389B71} (signed big-endian float64)
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_PCM_FL64, FCC('fl64'));

// Reverse GUIDs for little-endian 'in24', 'in32', 'fl32', 'fl64'
// {696E3234-0000-0010-8000-00AA00389B71} (signed little-endian int24, reverse 'in24')
//DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_PCM_IN24_le, 0x696E3234);
// {696E3332-0000-0010-8000-00AA00389B71} (signed little-endian int32, reverse 'in32')
//DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_PCM_IN32_le, 0x696E3332);
// {666C3332-0000-0010-8000-00AA00389B71} (signed little-endian float32, reverse 'fl32')
//DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_PCM_FL32_le, 0x666C3332);
// {666C3634-0000-0010-8000-00AA00389B71} (signed little-endian float64, reverse 'fl64')
//DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_PCM_FL64_le, 0x666C3634);

// {4F3D3D21-6D7C-4f73-AA05-E397B5EAE0AA}
DEFINE_GUID(MEDIASUBTYPE_PS2_SUB, 0x4f3d3d21, 0x6d7c, 0x4f73, 0xaa, 0x05, 0xe3, 0x97, 0xb5, 0xea, 0xe0, 0xaa);

// {78646153-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_ADX_ADPCM, FCC('Sadx'));


// Ogg

// {D2855FA9-61A7-4db0-B979-71F297C17A04}
DEFINE_GUID(MEDIASUBTYPE_Ogg, 0xd2855fa9, 0x61a7, 0x4db0, 0xb9, 0x79, 0x71, 0xf2, 0x97, 0xc1, 0x7a, 0x04);

// {cddca2d5-6d75-4f98-840e-737bedd5c63b} deprecated, use MEDIASUBTYPE_Vorbis2
DEFINE_GUID(MEDIASUBTYPE_Vorbis, 0xcddca2d5, 0x6d75, 0x4f98, 0x84, 0x0e, 0x73, 0x7b, 0xed, 0xd5, 0xc6, 0x3b);

// {6bddfa7e-9f22-46a9-ab5e-884eff294d9f} deprecated, use FORMAT_VorbisFormat2
DEFINE_GUID(FORMAT_VorbisFormat, 0x6bddfa7e, 0x9f22, 0x46a9, 0xab, 0x5e, 0x88, 0x4e, 0xff, 0x29, 0x4d, 0x9f);

// {8D2FD10B-5841-4a6b-8905-588FEC1ADED9}
DEFINE_GUID(MEDIASUBTYPE_Vorbis2, 0x8d2fd10b, 0x5841, 0x4a6b, 0x89, 0x05, 0x58, 0x8f, 0xec, 0x1a, 0xde, 0xd9);

// {B36E107F-A938-4387-93C7-55E966757473}
DEFINE_GUID(FORMAT_VorbisFormat2, 0xb36e107f, 0xa938, 0x4387, 0x93, 0xc7, 0x55, 0xe9, 0x66, 0x75, 0x74, 0x73);


// Matroska

// {1AC0BEBD-4D2B-45ad-BCEB-F2C41C5E3788}
DEFINE_GUID(MEDIASUBTYPE_Matroska, 0x1ac0bebd, 0x4d2b, 0x45ad, 0xbc, 0xeb, 0xf2, 0xc4, 0x1c, 0x5e, 0x37, 0x88);

// {E487EB08-6B26-4be9-9DD3-993434D313FD}
DEFINE_GUID(MEDIATYPE_Subtitle, 0xe487eb08, 0x6b26, 0x4be9, 0x9d, 0xd3, 0x99, 0x34, 0x34, 0xd3, 0x13, 0xfd);

// {87C0B230-03A8-4fdf-8010-B27A5848200D}
DEFINE_GUID(MEDIASUBTYPE_UTF8, 0x87c0b230, 0x03a8, 0x4fdf, 0x80, 0x10, 0xb2, 0x7a, 0x58, 0x48, 0x20, 0x0d);

// {3020560F-255A-4ddc-806E-6C5CC6DCD70A}
DEFINE_GUID(MEDIASUBTYPE_SSA, 0x3020560f, 0x255a, 0x4ddc, 0x80, 0x6e, 0x6c, 0x5c, 0xc6, 0xdc, 0xd7, 0x0a);

// {326444F7-686F-47ff-A4B2-C8C96307B4C2}
DEFINE_GUID(MEDIASUBTYPE_ASS, 0x326444f7, 0x686f, 0x47ff, 0xa4, 0xb2, 0xc8, 0xc9, 0x63, 0x07, 0xb4, 0xc2);

// {370689E7-B226-4f67-978D-F10BC1A9C6AE}
DEFINE_GUID(MEDIASUBTYPE_ASS2, 0x370689e7, 0xb226, 0x4f67, 0x97, 0x8d, 0xf1, 0x0b, 0xc1, 0xa9, 0xc6, 0xae);

// {76C421C4-DB89-42ec-936E-A9FBC1794714}
DEFINE_GUID(MEDIASUBTYPE_SSF, 0x76c421c4, 0xdb89, 0x42ec, 0x93, 0x6e, 0xa9, 0xfb, 0xc1, 0x79, 0x47, 0x14);

// {B753B29A-0A96-45be-985F-68351D9CAB90}
DEFINE_GUID(MEDIASUBTYPE_USF, 0xb753b29a, 0x0a96, 0x45be, 0x98, 0x5f, 0x68, 0x35, 0x1d, 0x9c, 0xab, 0x90);

// {F7239E31-9599-4e43-8DD5-FBAF75CF37F1}
DEFINE_GUID(MEDIASUBTYPE_VOBSUB, 0xf7239e31, 0x9599, 0x4e43, 0x8d, 0xd5, 0xfb, 0xaf, 0x75, 0xcf, 0x37, 0xf1);

// {04EBA53E-9330-436c-9133-553EC87031DC}
DEFINE_GUID(MEDIASUBTYPE_HDMVSUB, 0x04eba53e, 0x9330, 0x436c, 0x91, 0x33, 0x55, 0x3e, 0xc8, 0x70, 0x31, 0xdc);

// {42535844-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_XSUB, FCC('DXSB'));

// {C886D215-F485-40BB-8DB6-FADBC619A45D}
DEFINE_GUID(MEDIASUBTYPE_WEBVTT, 0xc886d215, 0xf485, 0x40bb, 0x8d, 0xb6, 0xfa, 0xdb, 0xc6, 0x19, 0xa4, 0x5d);

// {A33D2F7D-96BC-4337-B23B-A8B9FBC295E9}
DEFINE_GUID(FORMAT_SubtitleInfo, 0xa33d2f7d, 0x96bc, 0x4337, 0xb2, 0x3b, 0xa8, 0xb9, 0xfb, 0xc2, 0x95, 0xe9);

#pragma pack(push, 1)
struct SUBTITLEINFO {
	DWORD dwOffset;
	CHAR  IsoLang[4];     // three letter lang code + terminating zero
	WCHAR TrackName[256]; // 256 chars ought to be enough for everyone :)
};
#pragma pack(pop)

// SUBTITLEINFO structure content starting at dwOffset (also the content of CodecPrivate)
// --------------------------------------------------------------------------------------
//
// Here the text should start with the Byte Order Mark, even though
// UTF-8 is prefered, it also helps identifying the encoding type.
//
// MEDIASUBTYPE_USF:
//
// <?xml version="1.0" encoding="UTF-8"?>
// <!-- DOCTYPE USFSubtitles SYSTEM "USFV100.dtd" -->
// <?xml-stylesheet type="text/xsl" href="USFV100.xsl"?>
//
// <USFSubtitles version="1.0">
// ... every element excluding <subtitles></subtitles> ...
// </USFSubtitles>
//
// MEDIASUBTYPE_SSA/ASS:
//
// The file header and all sub-sections except [Events]
//
// MEDIATYPE_VOBSUB:
//
// TODO
//

// Data description of the media samples (everything is UTF-8 encoded here)
// ------------------------------------------------------------------------
//
// MEDIASUBTYPE_USF:
//
// The text _inside_ the <subtitle>..</subtitle> element.
//
// Since timing is set on the sample, there is no need to put
// <subtitle start=".." stop=".." duration=".."> into the data.
//
// MEDIASUBTYPE_SSA/ASS:
//
// Comma separated values similar to the "Dialogue: ..." line with these fields:
// ReadOrder, Layer, Style, Name, MarginL, MarginR, MarginV, Effect, Text
//
// With the exception of ReadOrder every field can be found in ASS files. The
// ReadOrder field is needed for the decoder to be able to reorder the streamed
// samples as they were placed originally in the file.
//
// If the source is only SSA, the Layer field can be left empty.
//
// MEDIATYPE_VOBSUB:
//
// Standard dvd subpic data, without the stream id at the beginning.
//

// Matroska CodecID mappings
// ------------------------
//
// S_TEXT/ASCII	<->	MEDIATYPE_Text		MEDIASUBTYPE_NULL	FORMAT_None
// S_TEXT/UTF8	<->	MEDIATYPE_Subtitle	MEDIASUBTYPE_UTF8	FORMAT_SubtitleInfo
// S_TEXT/SSA	<->	MEDIATYPE_Subtitle	MEDIASUBTYPE_SSA	FORMAT_SubtitleInfo
// S_TEXT/ASS	<->	MEDIATYPE_Subtitle	MEDIASUBTYPE_ASS	FORMAT_SubtitleInfo
// S_TEXT/USF	<->	MEDIATYPE_Subtitle	MEDIASUBTYPE_USF	FORMAT_SubtitleInfo
// S_VOBSUB		<-> MEDIATYPE_Subtitle	MEDIASUBTYPE_VOBSUB	FORMAT_SubtitleInfo
// S_VOBSUB/ZLIB<-> MEDIATYPE_Subtitle	MEDIASUBTYPE_VOBSUB	FORMAT_SubtitleInfo
//


// H.264

// {6F29D2AD-E130-45AA-B42F-F623AD354A90}
DEFINE_GUID(MEDIASUBTYPE_ArcsoftH264, 0x6F29D2AD, 0xE130, 0x45AA, 0xB4, 0x2F, 0xF6, 0x23, 0xAD, 0x35, 0x4A, 0x90);

// {48535356-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_VSSH, FCC('VSSH'));

// {68737376-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_vssh, FCC('vssh'));

// {43564144-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DAVC, FCC('DAVC'));

// {63766164-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_davc, FCC('davc'));

// {43564150-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_PAVC, FCC('PAVC'));

// {63766170-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_pavc, FCC('pavc'));

// {31637661-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_avc1, FCC('avc1'));

// {31564343-0000-0010-8000-00AA00389B71} (custom H.264 FourCC used by Haali Media Splitter)
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_CCV1, FCC('CCV1'));

// {8D2D71CB-243F-45E3-B2D8-5FD7967EC09B} <= Used by MediaPortal for example...
DEFINE_GUID(MEDIASUBTYPE_H264_bis, 0x8D2D71CB, 0x243F, 0x45E3, 0xB2, 0xD8, 0x5F, 0xD7, 0x96, 0x7E, 0xC0, 0x9B);

// MVC

// {43564D41-0000-0010-8000-00AA00389B71} Full MVC
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_AMVC, FCC('AMVC'));

// {3143564D-0000-0010-8000-00AA00389B71} Full MVC in mp4-form
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_MVC1, FCC('MVC1'));

// {43564D45-0000-0010-8000-00AA00389B71} Subset MVC
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_EMVC, FCC('EMVC'));

//

// {33515653-0000-0010-8000-00aa00389b71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_SVQ3, FCC('SVQ3'));

// {44495658-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_XVID, FCC('XVID'));

// {64697678-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_xvid, FCC('xvid'));

// {30355844-0000-0010-8000-00aa00389b71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DX50, FCC('DX50'));

// {30357864-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_dx50, FCC('dx50'));

// {58564944-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DIVX, FCC('DIVX'));

// {78766964-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_divx, FCC('divx'));

// {78766944-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Divx, FCC('Divx'));

// {5634504d-0000-0010-8000-00aa00389b71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_MP4V, FCC('MP4V'));

// {7634706D-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_mp4v, FCC('mp4v'));

// {31564933-0000-0010-8000-00aa00389b71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_3IV1, FCC('3IV1'));

// {31766933-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_3iv1, FCC('3iv1'));

// {32564933-0000-0010-8000-00aa00389b71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_3IV2, FCC('3IV2'));

// {32766933-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_3iv2, FCC('3iv2'));

// {58564933-0000-0010-8000-00aa00389b71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_3IVX, FCC('3IVX'));

// {78766933-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_3ivx, FCC('3ivx'));

// {305A4C42-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_BLZ0, FCC('BLZ0'));

// {307A6C62-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_blz0, FCC('blz0'));

// {56344D44-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DM4V, FCC('DM4V'));

// {76346D64-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_dm4v, FCC('dm4v'));

// {4D475844-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DXGM, FCC('DXGM'));

// {6D677864-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_dxgm, FCC('dxgm'));

// {53444646-0000-0010-8000-00aa00389b71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_FFDS, FCC('FFDS'));

// {73646666-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_ffds, FCC('ffds'));

// {57465646-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_FVFW, FCC('FVFW'));

// {77667666-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_fvfw, FCC('fvfw'));

// {34504D46-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_FMP4, FCC('FMP4'));

// {34706D66-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_fmp4, FCC('fmp4'));

// {34584448-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_HDX4, FCC('HDX4'));

// {34786468-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_hdx4, FCC('hdx4'));

// {34504D4C-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_LMP4, FCC('LMP4'));

// {34706D6C-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_lmp4, FCC('lmp4'));

// {4749444E-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_NDIG, FCC('NDIG'));

// {6769646E-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_ndig, FCC('ndig'));

// {34504D52-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_RMP4, FCC('RMP4'));

// {34706D72-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_rmp4, FCC('rmp4'));

// {34504D53-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_SMP4, FCC('SMP4'));

// {34706D73-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_smp4, FCC('smp4'));

// {47444553-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_SEDG, FCC('SEDG'));

// {67646573-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_sedg, FCC('sedg'));

// {34504D55-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_UMP4, FCC('UMP4'));

// {34706D75-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_ump4, FCC('ump4'));

// {46315657-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_WV1F, FCC('WV1F'));

// {66317677-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_wv1f, FCC('wv1f'));

// {58495658-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_XVIX, FCC('XVIX'));

// {78697678-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_xvix, FCC('xvix'));

// {31515653-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_SVQ1, FCC('SVQ1'));

// {33363248-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_H263, FCC('H263'));

// {33363268-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_h263, FCC('h263'));

// {33363253-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_S263, FCC('S263'));

// {33363273-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_s263, FCC('s263'));

// {33363249-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_I263, FCC('I263'));

// {56564D41-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_AMVV, FCC('AMVV'));

// {D979F77B-DBEA-4BF6-9E6D-1D7E57FBAD53}
DEFINE_GUID(MEDIASUBTYPE_WVC1_CYBERLINK, 0xD979F77B, 0xDBEA, 0x4BF6, 0x9E, 0x6D, 0x1D, 0x7E, 0x57, 0xFB, 0xAD, 0x53);

// {629B40AD-AD74-4EF4-A985-F0C8D92E5ECA}
DEFINE_GUID(MEDIASUBTYPE_WVC1_ARCSOFT, 0x629B40AD, 0xAD74, 0x4EF4, 0xA9, 0x85, 0xF0, 0xC8, 0xD9, 0x2E, 0x5E, 0xCA);

// {33585644-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DVX3, FCC('DVX3'));

// {33787664-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_dvx3, FCC('dvx3'));

// {33564944-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DIV3, FCC('DIV3'));

// {33766964-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_div3, FCC('div3'));

// {314C4F43-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_COL1, FCC('COL1'));

// {316C6F63-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_col1, FCC('col1'));

// {34564944-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DIV4, FCC('DIV4'));

// {34766964-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_div4, FCC('div4'));

// {35564944-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DIV5, FCC('DIV5'));

// {35766964-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_div5, FCC('div5'));

// {36564944-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DIV6, FCC('DIV6'));

// {36766964-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_div6, FCC('div6'));

// {31345041-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_AP41, FCC('AP41'));

// {31347061-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_ap41, FCC('ap41'));

// {3347504D-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_MPG3, FCC('MPG3'));

// {3367706D-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_mpg3, FCC('mpg3'));

// {32564944-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DIV2, FCC('DIV2'));

// {32766964-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_div2, FCC('div2'));

// {31564944-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DIV1, FCC('DIV1'));

// {31766964-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_div1, FCC('div1'));

// {3134504D-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_MP41, FCC('MP41'));

// {3134706D-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_mp41, FCC('mp41'));

// {4F454854-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_THEORA, FCC('THEO'));

// {6F656874-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_theora, FCC('theo'));

// {E69B30D1-7D65-4166-B990-103DA8C911E3}
DEFINE_GUID(FORMAT_RLTheora, 0xe69b30d1, 0x7d65, 0x4166, 0xb9, 0x90, 0x10, 0x3d, 0xa8, 0xc9, 0x11, 0xe3);

// {63637374-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_TSCC, FCC('tscc'));

// {32637374-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_TSCC2, FCC('tsc2'));

// {636E4D56-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_VMnc, FCC('VMnc'));

// {3141534D-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_MSA1, FCC('MSA1'));

// {3253544D-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_MTS2, FCC('MTS2'));

// {324D3247-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_G2M2, FCC('G2M2'));

// {334D3247-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_G2M3, FCC('G2M3'));

// {344D3247-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_G2M4, FCC('G2M4'));

// {56434946-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_FICV, FCC('FICV'));

// {30355649-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_IV50, FCC('IV50'));

// {31345649-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_IV41, FCC('IV41'));

// {31335649-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_IV31, FCC('IV31'));

// {32335649-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_IV32, FCC('IV32'));

// {61706A6D-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_MJPA, FCC('mjpa'));

// {62706A6D-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_MJPB, FCC('mjpb'));

// {32706A6D-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_MJP2, FCC('mjp2'));

// {43324A4D-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_MJ2C, FCC('MJ2C'));

// {44435343-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_CSCD, FCC('CSCD'));

// [55594648-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_HuffYUV, FCC('HFYU'));

// {48564646-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_HYMT, FCC('HYMT'));

// {48564646-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_FFVHuff, FCC('FFVH'));

// {31564646-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_FFV1, FCC('FFV1'));

// {5347414C-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Lagarith, FCC('LAGS'));

// {5947414D-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_MAGICYUV, FCC('MAGY'));

// {31565346-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_FLASHSV1, FCC('FSV1'));

// {32565346-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_FLASHSV2, FCC('FSV2'));

// {31535046-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_FPS1, FCC('FPS1'));

// {726F7478-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DXTORY, FCC('xtor'));

// {694B4942-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_BINKVI, FCC('BIKi'));

// {624B4942-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_BINKVB, FCC('BIKb'));

// {31554142-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_BINKA_DCT, FCC('BAU1'));

// {32554142-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_BINKA_RDFT, FCC('BAU2'));

// {3267706D-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_MPG2, FCC('mpg2'));

// UtVideo
// {41524C55-0000-0010-8000-00AA00389B71} RGBA
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Ut_ULRA, FCC('ULRA'));
// {47524C55-0000-0010-8000-00AA00389B71} RGB
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Ut_ULRG, FCC('ULRG'));
// {30594C55-0000-0010-8000-00AA00389B71} YUV 8-bit 4:2:0 BT.470 B/G
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Ut_ULY0, FCC('ULY0'));
// {32594C55-0000-0010-8000-00AA00389B71} YUV 8-bit 4:2:2 BT.470 B/G
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Ut_ULY2, FCC('ULY2'));
// {34594C55-0000-0010-8000-00AA00389B71} YUV 8-bit 4:4:4 BT.470 B/G
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Ut_ULY4, FCC('ULY4'));
// {30484C55-0000-0010-8000-00AA00389B71} YUV 8-bit 4:2:0 BT.709
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Ut_ULH0, FCC('ULH0'));
// {32484C55-0000-0010-8000-00AA00389B71} YUV 8-bit 4:2:2 BT.709
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Ut_ULH2, FCC('ULH2'));
// {34484C55-0000-0010-8000-00AA00389B71} YUV 8-bit 4:4:4 BT.709
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Ut_ULH4, FCC('ULH4'));

// UtVideo T2
// {41524D55-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Ut_UMRA, FCC('UMRA'));
// {47524D55-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Ut_UMRG, FCC('UMRG'));
// {32594D55-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Ut_UMY2, FCC('UMY2'));
// {34594D55-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Ut_UMY4, FCC('UMY4'));
// {32484D55-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Ut_UMH2, FCC('UMH2'));
// {34484D55-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Ut_UMH4, FCC('UMH4'));

// UtVideo Pro
// {41525155-0000-0010-8000-00AA00389B71} planar ARGB 40bpp
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Ut_UQRA, FCC('UQRA'));
// {47525155-0000-0010-8000-00AA00389B71} planar RGB 30bpp
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Ut_UQRG, FCC('UQRG'));
// {30595155-0000-0010-8000-00AA00389B71} YUV 10-bit 4:2:0
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Ut_UQY0, FCC('UQY0'));
// {32595155-0000-0010-8000-00AA00389B71} YUV 10-bit 4:2:2
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Ut_UQY2, FCC('UQY2'));

// Apple ProRes
// {68637061-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_apch, FCC('apch'));
// {6e637061-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_apcn, FCC('apcn'));
// {73637061-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_apcs, FCC('apcs'));
// {6f637061-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_apco, FCC('apco'));
// {68347061-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_ap4h, FCC('ap4h'));
// {78347061-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_ap4x, FCC('ap4x'));
// {66706369-0000-0010-8000-00AA00389B71} // Apple ProRes in Matroska
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_icpf, FCC('icpf'));

// {6E645641-0000-0010-8000-00AA00389B71} Avid DNxHD
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_AVdn, FCC('AVdn'));

// {68645641-0000-0010-8000-00AA00389B71} Avid DNxHR
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_AVdh, FCC('AVdh'));

// {646F6369-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_icod, FCC('icod'));

// {64697663-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_CVID, FCC('cvid'));

// {48B93619-A959-45d9-B5FD-E12A67A96CF1}
DEFINE_GUID(MEDIASUBTYPE_RoQ, 0x48b93619, 0xa959, 0x45d9, 0xb5, 0xfd, 0xe1, 0x2a, 0x67, 0xa9, 0x6c, 0xf1);

// {56516F52-0000-0010-8000-00AA00389B71} 'RoQV' == MEDIASUBTYPE_RoQV
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_RoQV, FCC('RoQV'));

// {20676e70-0000-0010-8000-00aa00389b71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_PNG, MAKEFOURCC('p','n','g',0x20));

// {53504238-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_8BPS, FCC('8BPS'));

// {48564443-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_CDVH, FCC('CDVH'));

// {43564443-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_CDVC, FCC('CDVC'));

// Quicktime DV sybtypes (used in LAV Splitter)
// {70637664-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DVCP, FCC('dvcp'));
// {70707664-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DVPP, FCC('dvpp'));
// {70357664-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DV5P, FCC('dv5p'));
// {20637664-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DVC, MAKEFOURCC('d','v','c',0x20));
// 32687664-0000-0010-8000-00AA00389B71
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DVH2, FCC('dvh2'));
// 33687664-0000-0010-8000-00AA00389B71
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DVH3, FCC('dvh3'));
// 34687664-0000-0010-8000-00AA00389B71
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DVH4, FCC('dvh4'));
// 35687664-0000-0010-8000-00AA00389B71
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DVH5, FCC('dvh5'));
// 36687664-0000-0010-8000-00AA00389B71
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DVH6, FCC('dvh6'));
// 71687664-0000-0010-8000-00AA00389B71
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DVHQ, FCC('dvhq'));
// 70687664-0000-0010-8000-00AA00389B71
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DVHP, FCC('dvhp'));
// 76645641-0000-0010-8000-00AA00389B71
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_AVdv, FCC('AVdv'));
// 31645641-0000-0010-8000-00AA00389B71
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_AVd1, FCC('AVd1'));

// {31706148-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Hap1, FCC('Hap1'));
// {35706148-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Hap5, FCC('Hap5'));
// {41706148-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_HapA, FCC('HapA'));
// {4D706148-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_HapM, FCC('HapM'));
// {59706148-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_HapY, FCC('HapY'));

// {4D415243-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_CRAM, 0x4D415243);

// {31305641-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_AV01, FCC('AV01'));

// {31305641-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_av01, FCC('av01'));

// Audio codecs

// {41564D41-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_IMA_AMV, FCC('AMVA'));

// {4C4C454E-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_NELLYMOSER, FCC('NELL'));

// {63616C61-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_ALAC, FCC('alac'));

// {20534C41-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_ALS, MAKEFOURCC('A','L','S',0x20));

// {A23EB7FC-510B-466F-9FBF-5F878F69347C}   LAVF/LAVC specific
DEFINE_GUID(MEDIASUBTYPE_BD_LPCM_AUDIO, 0xa23eb7fc, 0x510b, 0x466f, 0x9f, 0xbf, 0x5f, 0x87, 0x8f, 0x69, 0x34, 0x7c);

// {434D4451-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_QDMC, FCC('QDMC'));

// {324D4451-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_QDM2, FCC('QDM2'));

// {2043504D-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_MPC7, MAKEFOURCC('M','P','C',0x20));

// {3843504D-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_MPC8, FCC('MPC8'));

// {229F9AD7-2F4D-4b45-B858-A3F434E7179A}
DEFINE_GUID(MEDIASUBTYPE_MUSEPACK_Stream, 0x229f9ad7, 0x2f4d, 0x4b45, 0xb8, 0x58, 0xa3, 0xf4, 0x34, 0xe7, 0x17, 0x9a);

// {FF5A7C6F-6646-42ab-A1FC-0E6739D56E75}
DEFINE_GUID(MEDIASUBTYPE_WAVPACK_Stream, 0xff5a7c6f, 0x6646, 0x42ab, 0xa1, 0xfc, 0x0e, 0x67, 0x39, 0xd5, 0x6e, 0x75);

// {A721EC57-6EEB-47a3-8805-AD75E0417C26}
DEFINE_GUID(MEDIASUBTYPE_TTA1_Stream, 0xa721ec57, 0x6eeb, 0x47a3, 0x88, 0x05, 0xad, 0x75, 0xe0, 0x41, 0x7c, 0x26);

// {41516F52-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_RoQA, FCC('RoQA'));

// {20455041-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_APE, MAKEFOURCC('A','P','E',0x20));

// {5355504F-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_OPUS, FCC('OPUS'));

// {949F97FD-56F6-4527-B4AE-DDEB375AB80F}   Mpc-be specific !
DEFINE_GUID(MEDIASUBTYPE_HDMV_LPCM_AUDIO, 0x949f97fd, 0x56f6, 0x4527, 0xb4, 0xae, 0xdd, 0xeb, 0x37, 0x5a, 0xb8, 0x0f);

// {20504C4D-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_MLP, MAKEFOURCC('M','L','P',0x20));

// {20445344-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DSD, MAKEFOURCC('D','S','D',0x20));

// {4C445344-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DSDL, FCC('DSDL'));

// {4D445344-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DSDM, FCC('DSDM'));

// {31445344-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DSD1, FCC('DSD1'));

// {38445344-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DSD8, FCC('DSD8'));

// {20545344-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_DST, MAKEFOURCC('D','S','T',0x20));

// {33534541-0000-0010-8000-00AA00389B71} S302M AES3
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_AES3, FCC('AES3'));

// {71cfa727-37e4-404a-aec0-34842532eff7} ArcSoft DD+
DEFINE_GUID(MEDIASUBTYPE_DOLBY_DDPLUS_ARCSOFT, 0x71cfa727, 0x37e4, 0x404a, 0xae, 0xc0, 0x34, 0x84, 0x25, 0x32, 0xef, 0xf7);

// {AFBC2343-3DCB-4047-9655-E1E62A61B1C5}
DEFINE_GUID(MEDIASUBTYPE_FFMPEG_AUDIO, 0xafbc2343, 0x3dcb, 0x4047, 0x96, 0x55, 0xe1, 0xe6, 0x2a, 0x61, 0xb1, 0xc5);

// {35189950-CAC9-4C8D-819D-B6FAEE15DD9D}
DEFINE_GUID(FORMAT_WaveFormatExFFMPEG, 0x35189950, 0xcac9, 0x4c8d, 0x81, 0x9d, 0xb6, 0xfa, 0xee, 0x15, 0xdd, 0x9d);

// {20C518C0-C136-4FB8-8418-024934F0BACA}
DEFINE_GUID(MEDIASUBTYPE_TAK_Stream, 0x20c518c0, 0xc136, 0x4fb8, 0x84, 0x18, 0x02, 0x49, 0x34, 0xf0, 0xba, 0xca);

// {70725641-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_AVrp, FCC('AVrp'));

// {30514853-0000-0010-8000-00AA00389B71} SpeedHQ - SHQ0
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_SHQ0, FCC('SHQ0'));

// {31514853-0000-0010-8000-00AA00389B71} SpeedHQ - SHQ1
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_SHQ1, FCC('SHQ1'));

// {32514853-0000-0010-8000-00AA00389B71} SpeedHQ - SHQ2
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_SHQ2, FCC('SHQ2'));

// {33514853-0000-0010-8000-00AA00389B71} SpeedHQ - SHQ3
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_SHQ3, FCC('SHQ3'));

// {34514853-0000-0010-8000-00AA00389B71} SpeedHQ - SHQ4
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_SHQ4, FCC('SHQ4'));

// {35514853-0000-0010-8000-00AA00389B71} SpeedHQ - SHQ5
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_SHQ5, FCC('SHQ5'));

// {37514853-0000-0010-8000-00AA00389B71} SpeedHQ - SHQ7
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_SHQ7, FCC('SHQ7'));

// {39514853-0000-0010-8000-00AA00389B71} SpeedHQ - SHQ9
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_SHQ9, FCC('SHQ9'));

// {33535641-0000-0010-8000-00AA00389B71} AVS3
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_AVS3, FCC('AVS3'));

// {31435656-0000-0010-8000-00AA00389B71} VVC
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_VVC1, FCC('VVC1'));

// {31565041-0000-0010-8000-00AA00389B71} APV1
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_APV1, FCC('APV1'));

// uncompressed

// {D80FA03C-35C1-4FA1-8C8E-375C8667166E}
DEFINE_GUID(MEDIASUBTYPE_LAV_RAWVIDEO, 0xd80fa03c, 0x35c1, 0x4fa1, 0x8c, 0x8e, 0x37, 0x5c, 0x86, 0x67, 0x16, 0x6e);

// {20203859-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Y8, MAKEFOURCC('Y','8',0x20,0x20));

// {30303859-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Y800, FCC('Y800'));

// {10003159-0000-0010-8000-00AA00389B71} 'Y1[0][16]'
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Y16, MAKEFOURCC('Y','1',0,16));

// {36315659-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_YV16, FCC('YV16'));

// {34325659-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_YV24, FCC('YV24'));

// {30313459-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Y410, FCC('Y410'));

// {36313459-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Y416, FCC('Y416'));

// {42313459-0000-0010-8000-00AA00389B71} // YUV 4:1:1 Planar
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Y41B, FCC('Y41B'));

// {42323459-0000-0010-8000-00AA00389B71} // YUV 4:2:2 Planar
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_Y42B, FCC('Y42B'));

// {50343434-0000-0010-8000-00AA00389B71} // YUV 4:4:4 Planar
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_444P, FCC('444P'));

// {10003359-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_YUV444P16, MAKEFOURCC('Y','3',0,16));

// {76757963-0000-0010-8000-00AA00389B71} // UYVY flipped vertically
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_cyuv, FCC('cyuv'));

// {30424752-0000-0010-8000-00AA00389B71} 'RGB[48]'
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_RGB48, MAKEFOURCC('R','G','B',48));

// {30524742-0000-0010-8000-00AA00389B71} 'BGR[48]'
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_BGR48, MAKEFOURCC('B','G','R',48));

// {40415242-0000-0010-8000-00AA00389B71} 'BRA[64]',
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_BGRA64, MAKEFOURCC('B','R','A',64));

// {72383462-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_b48r, FCC('b48r'));

// {61343662-0000-0010-8000-00AA00389B71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_b64a, FCC('b64a'));

// {30313272-0000-0010-8000-00aa00389b71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_r210, FCC('r210'));

// {67303152-0000-0010-8000-00AA00389B71
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_R10g, FCC('R10g'));

// {6B303152-0000-0010-8000-00aa00389b71}
DEFINE_MEDIATYPE_GUID(MEDIASUBTYPE_R10k, FCC('R10k'));
